import { 
  Bot,
  Resource, 
  ResourceComment,
  Report,
  ResourceUp, 
  Server,
} from '@boticord/resources-client'
import { InferSubjects } from '@casl/ability'
import { Token } from '@boticord/auth'
import { Badge, User } from '@boticord/users-client'
import { IdentifiableModel } from '../decorators/fetching-policy.decorator'

export type Subject = 
  InferSubjects<typeof Resource |
  typeof Bot | 
  typeof Server |
  typeof ResourceComment |
  typeof ResourceUp |
  typeof Token |
  typeof Badge |
  typeof User |
  typeof Report |
  (new (...args: any[]) => IdentifiableModel)
  > | 'all'
